package com.itfenghuang;

import org.junit.Test;

import java.sql.*;
import java.util.ArrayList;
@SuppressWarnings("all")
//回忆JDBC
public class A01_回忆 {
    /**
     * 1.jdbc实现步骤
     *  1).导入jar包  数据库连接jar包
     *  2).加载驱动
     *  3).获取连接
     *  4).获取执行者对象
     *  5).执行sql语句,并接受返回结果
     *  6).处理结果
     *  7).释放资源
     * 2.作业
     *  针对Student表进行增删改查,
     *      增: 域编译,控制台输入
     *      删: 控制台输入sid编号,删除数据库中对应的数据
     *      改: 控制台输入sid以及要修改的字段值,修改数据库中对应对的数据
     *      查: 控制台输入名字,年龄去查询数据库中的数据,展示在控制台上
     */
    @Test
    public void test1() throws Exception {
        //导入jar包完成
        //2.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //3.获取连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/" +
                "aa_chun_day02", "root", "123456");
        //4获取执行者对象
        Statement stat = conn.createStatement();
        //5.执行sql语句
        String sql="select * from Student where sage>20";
        ResultSet resultSet = stat.executeQuery(sql);
        //创建集合对象,存储学生
        ArrayList<Student> list = new ArrayList<>();
        //6.处理结果集
        while (resultSet.next()){
            String sname = resultSet.getString("sname");
            int sage = resultSet.getInt("sage");
            Student stu = new Student();
            stu.setSname(sname);
            stu.setSgae(sage);
            //向集合中添加学生对象
            list.add(stu);
        }
        System.out.println(list);
        //7.释放资源
        resultSet.close();
        stat.close();
        conn.close();
    }

    @Test
    public void test2() throws Exception {
        String name="lisi";
        String pass="sss' or 'a'='a";
        //导入jar包完成
        //2.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //3.获取连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/" +
                "aa_chun_day02", "root", "123456");
        //4.获取执行者对象  会有sql注入攻击
        Statement stat = conn.createStatement();
        //5.执行sql语句  会有sql注入攻击
        String sql="select * from user where username='"+name+"' and password='"+pass+"'";
        ResultSet resultSet = stat.executeQuery(sql);
        //6.处理结果集
        while (resultSet.next()){
            String username = resultSet.getString("username");
            String password = resultSet.getString("password");
            System.out.println(username+" "+password);
        }
        //7.释放资源
        resultSet.close();
        stat.close();
        conn.close();
    }

    @Test
    public void test3() throws Exception {
        String sname="无情";
        String course="语文";
        //导入jar包完成
        //2.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //3.获取连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/" +
                "aa_chun_day02", "root", "123456");
        // ? 占位符
        String sql="select * from student where sname=? and course=? ";
        //4.获取域编译对象
        PreparedStatement pstat = conn.prepareStatement(sql);
        //给这些占位符赋值,调用set方法赋值
        //void setString(编号,值)
        //编号参数的索引从1开始,占位符有几个,编号就到几
        pstat.setString(1,sname);
        pstat.setString(2,course);
        //执行sql语句
        // 查询  executeQuery();
        //增删改  executeUpdate();
        ResultSet resultSet = pstat.executeQuery();
        while (resultSet.next()){
            String username = resultSet.getString("sname");
            String password = resultSet.getString("course");
            System.out.println(username+" "+password);
        }
        //释放资源
        resultSet.close();
        conn.close();

    }

}
